$247
Trong lĩnh vực công nghệ thông tin, WireShark là phần mềm bắt gói tin hàng đầu được sử dụng trong v
Trong lĩnh vực công nghệ thông tin, WireShark là phần mềm bắt gói tin hàng đầu được sử dụng trong việc theo dõi, giám sát và phân tích traffic Network. Bài viết này tôi sẽ hướng dẫn sử dụng WireShark toàn tập từ căn bản đến nâng cao: cài đặt, cách bắt gói tin, cách đọc gói tin, cách phân tích gói tin, cách viết Wireshark Expression để filter traffic khi capture hoặc khi phân tích.
Wireshark là một ứng dụng dùng để bắt (capture), phân tích và xác định các vấn đề liên quan đến network như: rớt gói tin, kết nối chậm, hoặc các truy cập bất thường. Phần mềm này cho phép quản trị viên hiểu sâu hơn các Network Packets đang chạy trên hệ thống, qua đó dễ dàng xác định các nguyên nhân chính xác gây ra lỗi.
Sử dụng WireShark có thể capture các packet trong thời gian thực (real time), lưu trữ chúng lại và phân tích chúng offline. Ngoài ra, nó cũng bao gồm các filter, color coding và nhiều tính năng khác, cho phép người dùng tìm hiểu sâu hơn về lưu lượng mạng cũng như inspect (kiểm tra) các packets.
Ứng dụng được viết bằng ngôn ngữ C và hệ điều hành Cross-platform, ngoài ra còn bao gồm có các bản phân phối Linux, Windows, OS X, FreeBSD, NetBSD và OpenBSD. Đây là một phần mềm mã nguồn mở, được cấp phép GPL do đó được miễn phí sử dụng, tự do chia sẻ và sửa đổi.
Từng được biết đến với cái tên Ethereal, phần mềm được xây dựng bởi Gerald Combs vào năm 1998. Hiện nay, có một tổ chức toàn cầu gồm nhiều chuyên gia mạng, cũng như các Developer phần mềm hàng đầu tham gia cùng The WireShark Team phát triển phần mềm này. Đội ngũ chuyên gia này không ngừng cập nhật các công nghệ và giao thức mới. Phiên bản ổn định nhất hiện nay là 2.2.6 ra mắt ngày 12 tháng 4 năm 2017.
Đây là phần mềm hoàn toàn an toàn để sử dụng. Nhiều cơ quan chính phủ, tập đoàn, tổ chức phi lợi nhuận và tổ chức giáo dục đều sử dụng Wireshark để khắc phục các sự cố, cũng như ứng dụng vào việc giảng dạy. Có thể nói, cách tốt nhất để tìm hiểu về mạng chính là sử dụng để theo dõi các lưu lượng truy cập.
Dĩ nhiên, đây là một công cụ có khả năng dò tìm dữ liệu trong các packet rất mạnh mẽ. Do đó cũng có nhiều câu hỏi được đặt ra xoay quanh tính hợp pháp của nó. Nhiều người dùng cũng như chuyên gia đã nhấn mạnh rằng, chỉ nên sử dụng trên các mạng mà mình có thẩm quyền. Việc dùng Wireshark để xem các packet không được cho phép hoàn toàn không được khuyến khích.
Wireshark là một phần mềm dùng để phân tích và giám sát lưu lượng mạng. Dưới đây là một số chức năng chính của Wireshark:
WireShark là một công cụ dùng để capture và phân tích các packet. Nó capture các lưu lượng mạng trên mạng cục bộ, sau đó sẽ lưu trữ nó để phân tích offline. Có thể capture các lưu lượng mạng từ các kết nối Ethernet, Bluetooth, Wireless (IEEE.802.11), Token Ring, Frame Relay…
Wireshark cho phép thiết lập filter (bộ lọc) trước khi bắt đầu capture hoặc thậm chí là trong quá trình phân tích. Do đó, ta có thể thu hẹp phạm vi tìm kiếm trong quá trình theo dõi mạng.
Các dữ liệu capture ở dạng binary được chuyển thành định dạng giúp bạn dễ dàng đọc được. Với hơn 2000 giao thức mạng được hỗ trợ, điều này giúp xác định lưu lượng truy cập đang đi qua hệ thống mạng của bạn.
Với khối lượng lưu lượng khổng lồ truyền hệ thống mạng, các công cụ của Wireshark sẽ giúp lọc các lưu lượng đó ra để phân tích chúng. Bộ capture filter sẽ chỉ thu thập các loại lưu lượng truy cập mà bạn quan tâm. Sau đó, hiển thị chi tiết lưu lượng mà bạn muốn kiểm tra. Module phân tích giao thức mạng cũng cung cấp các công cụ tìm kiếm, các biểu thức và tô màu, giúp dễ phân tích hơn.
Các tính năng nổi bật của phần mềm bắt gói tin Wireshark:
Wireshark được sử dụng để chặn và phân tích lưu lượng TLS được mã hóa. Các session key đối xứng được lưu trữ trong trình duyệt. Và với cài đặt trình duyệt thích hợp, quản trị viên có thể load các session key đó và kiểm tra các lưu lượng ở dạng đã được giải mã.
Ứng dụng cũng đi kèm với các công cụ đồ họa để hình dung các số liệu thống kê. Điều này giúp bạn dễ dàng phát hiện các xu hướng chung, cảnh báo các phát hiện để quản lý dễ dàng và hiệu quả hơn.
Có rất nhiều cách dùng Wireshark, trong lĩnh vực giáo dục, nó còn là một công cụ học tập rất hiệu quả. Việc sử dụng Wireshark để bắt và đọc gói tin, xem cách các packet di chuyển, thậm chí đào sâu vào các lớp byte, kiểm tra các header của packet – là một cách để học và dạy người khác về Network. Chính vì thế, đây là một phần không thể thiếu trong các chương trình đào tạo hiện nay.
Ngoài ra, bạn có thể tham khảo thêm về bảo mật mạng qua các bài viết sau:
Bên cạnh những tính năng hữu ích của WireShark, thì công cụ này cũng có một số điểm hạn chế sau đây mà bạn nên cân nhắc khi sử dụng:
Khả năng xử lý tài nguyên: Đây là một ứng dụng yêu cầu nhiều tài nguyên, đặc biệt khi phải xử lý lưu lượng mạng lớn. Quá trình phân tích gói tin chi tiết có thể tiêu tốn lượng lớn bộ nhớ và tài nguyên CPU, nhất là khi ghi lại hoặc phân tích lưu lượng mạng với tốc độ cao trong thời gian dài. Điều này có thể làm giảm hiệu suất hệ thống hoặc khiến máy tính hoạt động chậm lại.
Độ phức tạp khi sử dụng: Wireshark là công cụ phân tích mạng mạnh mẽ nhưng có giao diện và tính năng phức tạp. Người dùng mới có thể gặp khó khăn trong việc làm quen và khai thác hết các chức năng của công cụ này. Việc nắm vững kiến thức cơ bản về phân tích mạng là cần thiết để tận dụng tối đa Wireshark.
Yêu cầu quyền truy cập mạng: Để sử dụng Wireshark phân tích lưu lượng mạng, người dùng cần có quyền truy cập và điều khiển các giao diện mạng trên hệ thống. Điều này có thể là hạn chế khi sử dụng trong các môi trường công ty hoặc hệ thống mạng có quản lý nghiêm ngặt.
Không hỗ trợ phân tích mã hóa SSL/TLS: Wireshark không thể giải mã và phân tích dữ liệu từ các kết nối sử dụng giao thức mã hóa SSL/TLS, do đặc điểm bảo mật của các giao thức này và giới hạn của công cụ trong việc giải mã các kết nối mã hóa.
Có rất nhiều tài liệu hướng dẫn và video hướng dẫn cách sử dụng Wireshark cho từng mục đích cụ thể. Nhưng để nắm được những thông tin và cách thức chuẩn hóa hơn, bạn nên bắt đầu tìm hiểu một số tài liệu chính thức trên trang Wikipedia thay vì các tài liệu Wireshark tiếng Việt. Đôi khi các tài liệu Việt Nam dịch chưa chuẩn xác các thuật ngữ chuyên ngành sẽ gây cho bạn nhiều khó khăn hơn.
Tải và cài đặt Wireshark tương đối dễ dàng. Phiên bản cơ bản hiện đang hoàn toàn miễn phí.
Phần mềm này có hỗ trợ Windows phiên bản 32 bit và 64 bit. Bạn hãy chọn phiên bản chính xác cho hệ điều hành đang sử dụng. Tính đến thời điểm viết thì Wireshark 3.4.5 là phiên bản mới nhất.
Bản cài đặt chính thức cho macOS đã được hỗ trợ trên trang chủ, bạn chỉ việc download và mở file .dmg để bắt đầu cài đặt và kéo thả biểu tượng của Wireshark vào thư mục /Applications để hoàn tất.
Từ terminal prompt, chạy lệnh sau:
Các lệnh giúp tải package xuống, update package và thêm các đặc quyền cho người dùng để khởi chạy.
Từ Terminal Prompt, chạy lệnh sau:
Trong đó, dòng lệnh đầu tiên sẽ cài đặt GUI và phiên bản CLI của WireShark. Dòng lệnh thứ hai sẽ thêm quyền sử dụng cho nó, thay username thành user hiện tại bạn đang sử dụng.
Hiện tại, Wireshark đã được cài đặt sẵn trong các bản phân phối Kali Linux. Hãy kiểm tra menu ở option “Sniffing & Spoofing” để sử dụng.
Sau khi download và cài đặt, bạn có thể khởi động nó bằng cách double-click vào tên của Network interface trong danh sách phía dưới “Capture” để bắt đầu bắt gói tin trên card mạng đó. Đường biểu diễn phía sau tên Interface thể hiện lưu lượng mạng đang sử dụng.
Sau đó, các packet sẽ bắt đầu hiển thị theo thời gian thực. Wireshark sẽ capture từng packet được gửi đến hoặc đi từ hệ thống của ta.
Nếu chế độ Promiscuous được enable (theo mặc định), bạn cũng có thể xem tất cả các packet khác trên mạng thay vì chỉ các packet được gửi đến network adapter của mình.
Để kiểm tra chế độ Promiscuous, bạn click vào Capture > Options và kiểm tra xem hộp Enable promiscuous mode on all interfaces có được kích hoạt chưa (nằm ở dưới cùng của cửa sổ).
Sau đó, bạn click vào nút Stop màu đỏ (ở góc trên bên trái của cửa sổ – hoặc chọn Capture > Stop) nếu muốn dừng việc capture lại.
Ngoài cách bắt gói tin và sử dụng giao diện như trên, bạn cũng có thể dùng cách bắt gói tin bằng cách sử dụng command line được đề cập ở phần nâng cao phía dưới bài viết.
Bạn sẽ dành rất nhiều thời gian để thao tác trên giao diện chính của phần mềm này. Đây là nơi liệt kê danh sách các packet đã được capture, parse và thể hiện dưới định dạng mà chúng ta có thể dễ dàng đọc thông tin và phân tích chúng.
Giao diện chính của Wireshark được chia thành 3 phần:
Để mở gói tin bằng Wireshark, bạn chọn File > Open và tìm đến đường dẫn của file cần mở.
Để lưu gói tin đã capture, bạn click vào File > Save, sau đó chọn đường dẫn để lưu trữ, đặt tên cho file capture và định dạng sẽ lưu.
Hãy khám phá cách sử dụng Wireshark để lọc gói tin. Trong tình huống khi bạn muốn theo dõi lưu lượng truy cập của một ứng dụng thực hiện cuộc gọi điện về nhà, Wireshark có khả năng tạm thời đóng tất cả các ứng dụng khác đang sử dụng mạng, giúp người dùng giảm thiểu lưu lượng truy cập. Tuy nhiên, cần lưu ý rằng bạn sẽ phải xử lý một lượng lớn gói dữ liệu cần được lọc.
Một cách cơ bản để sử dụng Wireshark để lọc là nhập điều kiện vào hộp bộ lọc ở đầu cửa sổ và sau đó nhấp vào Apply hoặc nhấn Enter. Ví dụ, nếu bạn nhập dns vào bộ lọc, chỉ các gói tin DNS sẽ được hiển thị. Wireshark cung cấp chức năng tự động hoàn thành bộ lọc khi bạn bắt đầu nhập.
Ngoài ra, bạn cũng có thể truy cập Analyze > Display Filters để chọn các bộ lọc mặc định của Wireshark hoặc thêm bộ lọc mới và lưu chúng để sử dụng sau này.
Khi muốn xem chi tiết một cuộc trò chuyện TCP giữa máy khách và máy chủ, bạn có thể chuột phải vào một tệp và chọn Follow > TCP Stream. Điều này sẽ hiển thị cuộc trò chuyện TCP đầy đủ. Bạn cũng có thể theo dõi các cuộc trò chuyện của các giao thức khác để hiểu rõ hơn về cách chúng hoạt động.
Sau khi áp dụng bộ lọc, Wireshark sẽ tự động hiển thị các gói tin liên quan đến cuộc trò chuyện, giúp bạn hiểu rõ cách lọc gói tin trong Wireshark.
Trên máy tính, Wireshark sử dụng màu sắc để đánh dấu các gói tin, giúp người dùng nhanh chóng xác định các loại lưu lượng khi thực hiện truy cập. Các màu sắc mặc định trong Wireshark có các ý nghĩa như sau:
Để hiểu rõ hơn về ý nghĩa cụ thể của từng màu, bạn có thể truy cập mục View > Coloring Rules trong Wireshark. Ngoài ra, người dùng cũng có khả năng tự tùy chỉnh màu sắc theo ý muốn cá nhân thông qua cách thức Color Coding trong Wireshark.
Để kiểm tra gói tin trong máy tính sử dụng Wireshark, bạn bắt đầu bằng cách nhấp chuột vào một gói tin cụ thể. Sau đó, để tạo một bộ lọc, bạn có thể nhấp chuột phải vào bất kỳ chi tiết nào trong gói tin và sử dụng menu con Apply as Filter để tạo bộ lọc dựa trên thông tin đó. Việc tự tạo bộ lọc giúp người dùng tập trung vào các gói tin cụ thể và thuận tiện trong quá trình phân tích dữ liệu mạng.
Để tìm kiếm gói tin, chúng ta có thể sử dụng thanh công cụ Find Packet bằng cách bấm phím Ctrl + F, một hộp thoại mới sẽ xuất hiện nằm giữa thanh Filter và Packet List:
Chúng ta có thể tìm kiếm packet dựa vào:
Filter cho phép bạn lọc ra những packet nào sẽ dùng để phân tích. Sử dụng Wireshark filter bằng cách khai báo một biểu thức để quy định việc thêm vào (inclusion) hoặc loại bỏ (exclusion) các gói tin. Nếu có những gói tin bạn không cần phân tích, có thể viết filter để loại bỏ chúng. Ngược lại, có những gói tin quan trọng bạn muốn phân tích kỹ, có thể viết filter để lọc riêng chúng ra. Có hai loại filter chính:
Capture Filter và Display Filter sử dụng cấu trúc ngữ pháp khác nhau nên chúng ta sẽ xem xét chi tiết từng loại.
Được áp dụng trong quá trình bắt gói tin để giới hạn số lượng gói tin sẽ được bắt. Lý do chính để sử dụng filter này nhằm cải thiện performance và giới hạn số lượng dữ liệu capture được chỉ chứa các thông tin chúng ta quan tâm, giúp việc phân tích trở nên hiệu quả hơn. Điều này cực kỳ hữu ích khi áp dụng bắt gói tin bằng Wireshark trên các hệ thống có lưu lượng mạng cao, dữ liệu trao đổi lớn.
Chúng ta có thể khai báo biểu thức cho Capture Filter ở Capture > Capture Filters hoặc khai báo ở phần …using this filter khi lựa chọn card mạng:
Wireshark Capture Filter sử dụng cú pháp của Berkeley Packet Filter (BPF):
Một vài Wireshark Expression tham khảo cho phần Capture Filter:
Display Filter giúp lọc ra những packet thỏa điều kiện trong file capture để thể hiện lên cho người dùng. Display filter chỉ lọc và thể hiện packet thỏa điều kiện chứ không xóa bỏ những packet không thỏa điều kiện, dữ liệu trong file capture hoàn toàn không bị ảnh hưởng.
Sử dụng Display Filter bằng cách nhập biểu thức (expression) vào Filter textbox phía trên phần Packet List. Bạn cũng có thể nhấp vào phần Expression để lựa chọn các pre-defined filters có sẵn ứng với từng giao thức.
Cú pháp của Wireshark Display Filter phần lớn tuân theo cú pháp:
Trong đó, Comparison Operators bao gồm:
Logical Operators bao gồm:
Một vài Wireshark Expression tham khảo cho phần Display Filter:
Ngoài ra, người dùng có thể Click vào Analyze > Display Filters để chọn một filter trong các filter mặc định. Từ đây, bạn có thể thêm hoặc custom các filter và lưu chúng để có thể dễ dàng truy cập sau này.
Một tính năng hữu ích khác là Follow TCP stream, bạn chọn một packet rồi click chuột phải vào packet chọn Follow > TCP Stream. Sau đó, một hộp thoại sẽ hiện ra cho thấy dữ liệu trao đổi giữa Client và Server trong luồng tương ứng và các packet liên quan. Bạn có thể click vào các giao thức khác trong menu Follow để xem đầy đủ các đoạn hội thoại, nếu có thể.
Cuối cùng, đóng cửa sổ lại và một filter sẽ được áp dụng tự động. Bây giờ, Wireshark đang hiển thị các packet tạo nên đoạn hội thoại đó.
Click vào một packet để chọn nó, sau đó xem thêm chi tiết về nó.
Ở khung cửa sổ Paket List sẽ cung cấp cho chúng ta các thông tin như:
Ở khung cửa sổ của Packet Details sẽ cho ta thông tin chi tiết từng Layer của packet như:
Chúng ta có thể click vào hình mũi tên ở đầu mỗi dòng để thể hiện thêm thông tin chi tiết.
Ở khung cửa sổ của Packet Bytes thể hiện gói tin ở dạng Hex. Khi click chọn 1 trường nào đó ở phần Packet Details, những bytes liên quan đến phần đó sẽ được tô đậm ở phần Packet Bytes tương ứng.
Bạn cũng có thể tạo thêm các filter ở đây. Chỉ cần click chuột phải vào một trong số các chi tiết, rồi chọn Apply as Filter để tạo một filter dựa theo đó.
Bên cạnh khả năng capture và filter nổi tiếng, còn có một số tính năng Wireshark nâng cao khác biến đây trở thành công cụ lợi hại cho các nhà quản trị mạng và phân tích bảo mật.
Tùy chọn chỉnh màu trong WireShark
Người dùng có thể tô màu cho các packet ở trong Packet List theo Display Filter, nhằm nhấn mạnh các packet cần đánh dấu. Bạn cũng có thể thêm vào các quy tắc ở đây để tô màu cho các packet theo chỉ định.
Chế độ Promiscuous trong WireShark
Theo mặc định, Wireshark chỉ capture các packet đến và đi từ máy tính mà nó chạy. Tuy nhiên, bạn có thể chỉnh chạy ở Promiscuous Mode trong Capture Settings. Khi đó, ngoài việc capture các packet được chỉ định cho nó, máy chạy Wireshark cũng có thể capture được các packet khác không dành cho nó, thay vì loại bỏ chúng.
Wireshark Statistics
Phần menu Statistic cung cấp những thông tin thống kê có giá trị liên quan đến file capture hiện tại như:
Wireshark Command Line
Ứng dụng cũng hỗ trợ một Command Line Interface (CLI) nếu hệ điều hành đang sử dụng không có một GUI. Cách kết hợp hiệu quả nhất là dùng CLI để capture, rồi lưu lại bản log để có thể reivew bằng GUI.
Các lệnh trong Wireshark
Qua bài viết này, có thể thấy Wireshark là một công cụ phân tích và đánh giá hệ thống mạng cực kì mạnh mẽ. Nếu bạn sử dụng với mục đích rõ ràng, hy vọng bài viết về tài liệu hướng dẫn sử dụng Wireshark toàn tập từ căn bản đến nâng cao này của Vietnix sẽ giúp các bạn sử dụng Wireshark một cách thuần thục và hiệu quả hơn.